Date: Wed, 08 Jan 1997 20:59:12 GMT
Server: NCSA/1.4.2
Content-type: text/html

<html>
<head>
<title>CSE 505 Projects</title>

</head>
<body>
<h1>CSE 505 Projects<br>Autumn 1994</h1>

<p>

The 505 project should involve writing a 4-10 page paper on a topic related
to programming language design and implementation, and may also involve a
programming project.  Students can work individually or in pairs on the
project and paper.  Optionally, students can give a presentation in class
on their work.  (More work will be expected of a pair than an individual.)
<p>
If you do an implementation project, it can either be something like
implementing an SK-reduction machine, or implementing some program in
language X.  If the latter, your paper should discuss not just the
particulars of the project, but also what the relevant special features of
X are, and how they helped and hindered the development.  Perhaps better,
implement it in both languages X and Y and compare.
<p>
A brief project proposal is due on November 21 (by e-mail).  The project is
due the last day of class, Dec 7.

<p>
Here are some suggestions for possible projects.  Naturally you aren't
restricted to these suggestions, but can work on a different topic if you wish.

<UL> 

<LI> Functional programming:
  <UL>
  <LI> implementing an SK reduction machine
  <LI> Haskell design; differences from Miranda and other functional languages
  <LI> supercombinators and the G machine 
  <LI> strictness analysis
  </UL>

<LI> Procedural Languages (Algol descendants, C-like languages, etc).
  <UL>
  <LI> Cove ... from Craig Chambers: "A potential 505 project might be to
refine the current Cove language design.  Cove is a type-safe dialect of C.
We'd like someone to work out the precise details of the casting rules and
the type parameterization structure to ensure type safety cannot be
circumvented."
  </UL>

<LI> Languages for concurrency <br>
(see the 590L topics this quarter)

<LI> Object-Oriented Programming
  <UL>
  <LI> Cecil (could include an implementation project in Cecil)
  <LI> Hermes
  <LI> type systems for object-oriented languages
  <LI> compilation techniques
  <LI> meta-object protocols and reflection
  <LI> Beta (an object-oriented language with a single abstraction mechanism)
  <LI> concurrent object-oriented languages
  <LI> Eiffel
  </ul>

<LI> Logic Programming; Constraint Programming
  <UL>
  <LI> Strand (perhaps including an implementation project)
  <LI> a survey of concurrent logic programming
  <LI> Kaleidoscope.  (This is a locally grown constraint imperative
programming language.  We'd like to have one or two people write some
sample programs, help debug the compiler, and explore the programing style.
Could evolve into a quals project.)
  <LI> constraint logic programming
  <LI> concurrent constraint programming -- either a survey, or using a
    language such as AKL
  <LI> the Oz language
  </ul>

<LI> Other
  <UL>
  <LI> Social and political aspects of programming language development
  <LI> continuations
  <LI> persistant programming languages
  <LI> Visual languages (e.g. Prograph, Visual Basic, component-based
       programming) 
  <LI> scripting languages
  <LI> language support for atomic data types
  </UL>

</body>
</html>


